package ca.csf.dfc.poo.iu;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;


/**
 * Page d'acceuil de l'application.
 * 
 * @author Jean-François Bédard, Marie-Pier Chabot, 
 * Alexandre Paquet Fasys, Claude Roy
 */
public class IntPageAcceuil extends JFrame
{
	/**
	 * Label du titre
	 */
	JLabel m_Titre = new JLabel("Simulation de robot aspirateur");
	/**
	 * Panneau contenant les images
	 */
	PanneauDeImage m_PanImageLogo = new PanneauDeImage();
	/**
	 * Bouton pour commencer la simulation
	 */
	JButton boutonSimulation = new JButton("Faire une simulation");
	/**
	 * Bouton permettant de definir un nouvelle environnement
	 */
	JButton boutonDefinir = new JButton("Definir l'environnement");
	/**
	 * Bouton permettant de quitter l'application
	 */
	JButton boutonQuitter = new JButton("Quitter");
	/**
	 * Pannel contenant les boutons de droite
	 */
	JPanel boutonDroite = new JPanel();
	
	/**
	 * Constructeur par d�faut de l'interface de page d'accueil
	 */
	public IntPageAcceuil()
	{
		super("Bienvenue");

		java.awt.Container c = this.getContentPane();
		c.setLayout( new BorderLayout());
		

		Font TitreFont = new Font("Serif", Font.PLAIN, 30);
		this.m_Titre.setFont(TitreFont);
		
		c.add(m_Titre, BorderLayout.NORTH);
		c.add(m_PanImageLogo, BorderLayout.CENTER);
		
		boutonDroite.setLayout(new BoxLayout(boutonDroite, BoxLayout.Y_AXIS));
		this.boutonDroite.add(Box.createRigidArea(new Dimension(0,40)));
		boutonDroite.add(this.boutonSimulation);
		this.boutonDroite.add(Box.createRigidArea(new Dimension(0,10)));
		boutonDroite.add(this.boutonDefinir);
		this.boutonDroite.add(Box.createRigidArea(new Dimension(0,10)));
		boutonDroite.add(this.boutonQuitter);
		this.boutonSimulation.setMinimumSize(new Dimension(200,60));
		this.boutonSimulation.setMaximumSize(new Dimension(200,60));
		this.boutonDefinir.setMinimumSize(new Dimension(200,60));
		this.boutonDefinir.setMaximumSize(new Dimension(200,60));
		this.boutonQuitter.setMinimumSize(new Dimension(200,60));
		this.boutonQuitter.setMaximumSize(new Dimension(200,60));
		
		c.add(this.boutonDroite, BorderLayout.EAST);
		
		this.setSize(575, 375);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		GestionButton gestionbutton = new GestionButton();
		this.boutonSimulation.addActionListener(gestionbutton);
		this.boutonDefinir.addActionListener(gestionbutton);
		this.boutonQuitter.addActionListener(gestionbutton);
	}
	
	/**
	 * G�re l'image de la page d'acceuil
	 * @author Alex
	 *
	 */
	public class PanneauDeImage extends JPanel
	{
		private static final long serialVersionUID = 1L;
	
		/**
		 * Image du robot dans la page d'acceuil
		 */
		private Icon m_ImageLogo;
		
		/**
		 * Constructeur par d�faut de la classe PanneauImage
		 */
		public PanneauDeImage()
		{
			super();
			
			m_ImageLogo = new ImageIcon(getClass().getResource("/res/Images/RobotMain.jpg"));
		}
		
		/**
		 * Methode qui sert a dessiner le logo de la page d'acceuil
		 */
		@Override
		protected void paintComponent(Graphics p_Graphic)
		{
			m_ImageLogo.paintIcon(this, p_Graphic,0,0);
		}
	}
	
	/**
	 * Gestion des bouttons
	 * @author Alex
	 *
	 */
	public class GestionButton implements ActionListener
	{

		@Override
		/**
		 * Methode qui est appeler lorsqu'on clique sur une des
		 * cases lors de la d�finition de l'environnement.
		 */
		public void actionPerformed(ActionEvent p_e) 
		{
			//Permet au bouton Quitter de quitter l'application
			if(p_e.getSource() == IntPageAcceuil.this.boutonQuitter)
			{
				System.exit(0);
			}
			//Permet au bouton definir d'ouvrir la page pour definir un nouveau environnement
			else if(p_e.getSource() == IntPageAcceuil.this.boutonDefinir)
			{
				IntDefinirEnv maPageSimul = new IntDefinirEnv();
				maPageSimul.setVisible(true);
		    	
				IntPageAcceuil.this.dispose();
			}
			//Permet au bouton de partir une nouvelle simulation
			else if(p_e.getSource() == IntPageAcceuil.this.boutonSimulation)
			{
				IntPrincipale maPageSimul = new IntPrincipale();
				maPageSimul.setVisible(true);
		    	
		    	IntPageAcceuil.this.dispose();
			}
		}
		
	}
}
